Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications are hosted and provided via a network of computing systems generally known as “the cloud.” These applications may have many different components, running on many different computing nodes within the cloud. Each of the components has one or more dependencies on other hardware or software components. As such, each cloud-hosted application may have many different points of failure, whether hardware- or software-related.